/*
 *  Autores: Claudio Djohnnatha, David Guilherme, Jailson Lima e Jordan Lira.
 *
 *  Projeto da disciplina Linguagem de Programação 2.
 *
 *  Arquivo: Server.java
 *
 *  Data: 27/08/2013
 *
 */

import java.net.Socket;
import java.net.ServerSocket;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Executor;

public class Server
{
   public static void main( String[] args )
   {
      // Gerenciador dos Protocolo de Comunicação.
      ManagementProtocol management = new ManagementProtocol();

      try
      {
         // Cria um pool de threads com cache.
         Executor exec = Executors.newCachedThreadPool();

         // Cria o servidor.
         ServerSocket s = new ServerSocket( 4444 );

         while( true )
         {
            Socket ns = s.accept();
            exec.execute( new ProtocolServer( ns, management ) );
         }

         // in.close();
         // out.close();
         // ns.close();
         // s.close();
      }
      catch ( IOException e ) {}
   }
}